package log

import "path/filepath"

var ExcelFileName = "" // 用户选择的excel配置文件名称，不包含path
var WorkPathDir = ""   // 生成文件存储的目录

var ActionTimeStr = ""     // 程序执行时间戳
var TargetConfileName = "" // 参考配置文件模板名称

var DefaultExcelVer int = 0        // excel 版本号，当前未使用
var DefaultExcelPrefix string = "" // excel文件，导入配置文件时，命名格式要做正确

// 当前解析的目标版本号
// var DefaultFirmVer int = VerGbcom40

// 李总定义Excel命名规范，在解析excel文件前，对Excel文件版本号进行验证
// 卡斯柯    gbcom      高达       虹信      gbcom      高达
// TAU5.0/TAU4.0_GB/TAU4.0_GT/TAU4.0_HX/TAU6.0_GB/TAU6.0_GT
const (
	ExeclVerGbcom40    = "TAU4.0_GB"
	ExeclVerGbcom60    = "TAU6.0_GB"
	ExeclVerCottal40   = "TAU4.0_GT"
	ExeclVerCottal60   = "TAU6.0_GT"
	ExeclVerCasco50    = "TAU5.0"
	ExeclVerHongxin40  = "TAU4.0_HX"
	ExcelVerCascoP1000 = "P1000_CS"
)

var _log logger

type logger interface {
	Debug(f string, v ...interface{})
	Info(f string, v ...interface{})
	Notice(f string, v ...interface{})
	Warn(f string, v ...interface{})
	Error(f string, v ...interface{})
	CreateConfigFile(name string)
}

func Debug(f string, v ...interface{}) {
	if _log != nil {
		_log.Debug(f, v...)
	}
}
func Info(f string, v ...interface{}) {
	if _log != nil {
		_log.Info(f, v...)
	}
}
func Notice(f string, v ...interface{}) {
	if _log != nil {
		_log.Notice(f, v...)
	}
}
func Warn(f string, v ...interface{}) {
	if _log != nil {
		_log.Warn(f, v...)
	}
}
func Error(f string, v ...interface{}) {
	if _log != nil {
		_log.Error(f, v...)
	}
}
func SetLogger(l logger) {
	_log = l
}

func CreateConfigFile(name string) {
	if _log != nil {
		_log.CreateConfigFile(name)
	}
}

// 带有文件路径的名称，截取有效的文件名称
func GetFileNameFromPath(name string) string {
	r := []rune(name)
	p := -1
	for i := len(r) - 1; i >= 0; i-- {
		if r[i] == filepath.Separator {
			p = i
			break
		}
	}
	if p > -1 && p+1 < len(r) {
		return string(r[p+1:])

	} else {
		return name
	}
}
